package com.itstyle.seckill.topic.jichu.invoke;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @Auther: liuwenxiang
 * @Date: 2020/3/20 00:01
 * @Description:
 */
public class MyInvocationHandler implements InvocationHandler {
    Object object;

    public MyInvocationHandler(Object object){
        this.object = object;
    }

    /**
     * 通过jdk动态代理，在bean创建过程中，
     * 通过在BeanPostProcessor-postProcessAfterInitialization后置处理器为目标bean创建代理proxybean
     * 后面的代码在执行被代理对象的方法时，就会变成执行InvocationHandler的invoke方法。
     *
     * 当很多对象都被代理了，那么执行他们被代理的方法时，就变成了invoke链
     */

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("代理方法进来了");
        return method.invoke(object,args);
    }
}